define(function(require, exports, module) {
  var $ = require("$");
  require("bootstrap_commonrequire");
  require('select2.css');
  require('select2');
  require('highcharts');
  require('highcharts.exporting');
  var store = require('store');
  var loader = require("./loader/loader");
  exports.init = function(param) {

    $(document).ready(function() {
      //蒙版
      loader.loading("数据加载中，请稍后……");
      //加载自定义模板-条件区域
      var isSystemAdmin = (store.get("userInfo").userType == -1);
      var tplattrs = {};
      tplattrs.isSystemAdmin = isSystemAdmin;

      var template = require("./countnewlyincrease.tpl");
      var Widget = require("widget");
      var Component = Widget.extend({
        template : template
      });
      
      
      // 图表区
      // 将查询出来的内容赋值给图表区
      var dataChart = {};
      // 记录日期栏中的开始/结束时间
      var startTimeSelect = "";
      var endTimeSelect = "";
     
      new Component({
        attrs : tplattrs,
        renderTo : queryAreaId
      });

      //获取查询条件
      function getCondition() {

        var isvid = $('#isvName').val();

        var applyid = $('#applyName').val();

        //统计周期
        var statisticstype = $('#statisticstype').val();

        //企业名称
        var carrierid = $('#carrierid').val();

        var queryStr = "";
        if (carrierid != '' && carrierid != null) {
          queryStr += ("corpid=" + carrierid + ";");
        }

        if (isvid != '' && isvid != null) {
          queryStr += ("isvid=" + isvid + ";");
        }

        if (applyid != '' && applyid != null) {
          queryStr += ("applyid=" + applyid + ";");
        }

        if (statisticstype != '' && statisticstype != null) {
          queryStr += ("statisticstype=" + statisticstype + ";");
        }

        var daterange = daterangeCom.getPickerRange();
        if (daterange) {
          var daterange = daterange.split("/");
          var startTime = daterange[0];
          var endTime = daterange[1];
          startTimeSelect = daterange[0];
          endTimeSelect = daterange[1];
          
          queryStr += "startTime=" + startTime + ";";
          queryStr += "endTime=" + endTime + ";";
        }

        return queryStr;
      }

      // 绑定企业名称下拉列表
      $("#ddlCarrierid").select2({
        placeholder: "企业名称",
        allowClear: true,
        formatNoMatches: "没有匹配的企业",
        ajax: {
          url: GLOBAL.URL.ADMIN_GETCARRIEROPTIONS,
          dataType: 'json',
          delay: 250,
          data: function (term, pageNo) {
            return {
              q: " c.name like '%"+term+"%' ", // search term
              appid: $("#applyName").val(),
              size: 25,
              start: (pageNo-1)*25
            };
          },
          results: function (data, pageNo) {
            var dataObj = eval(data);
            return {results:dataObj};
          },
          cache: true
        }
      });

      // 绑定isv名称下拉列表
      $.ajax({
        type : "POST",
        dataType : "json",
        url : "/user/queryIsv.do",//GLOBAL.URL.ADMIN_GETCARRIEROPTIONS,// wp.huang
        async : false,
        success : function(data) {
          $("#isvName").select2({
            placeholder : "ISV名称",
            allowClear : true,
            data : data
          });
        },
        error : function(data) {
          bootbox.alertTimeout('初始化ISV名称数据失败！');
        }
      });

      // 绑定应用下拉列表
      $.ajax({
        type : "POST",
        dataType : "json",
        url : "/condition/applyName.do",///GLOBAL.URL.GETAPPLYTYPELIST,  ////wp.huang
        async : false,

        success : function(data) {
          $("#applyName").select2({
            placeholder : "应用名称",
            allowClear : true,
            data : data
          });
        },
        error : function(data) {
          bootbox.alertTimeout('初始化应用名称数据失败！');
        }
      });

      //统计方式
      var typeList = [ {
        "id" : 1,
        "text" : "年"
      }, {
        "id" : 3,
        "text" : "月"
      }, {
        "id" : 4,
        "text" : "日"
      } ];
      $('#statisticstype').select2({
        placeholder : "统计周期",
        allowClear : true,
        data : typeList
      });

      $("#carrierid").select2({
        placeholder : "企业名称",
        allowClear : true,
        ajax : {
          url : GLOBAL.URL.ADMIN_GETCARRIEROPTIONS,
          dataType : 'json',
          delay : 250,
          data : function(term, pageNo) {
            return {
              q : " c.name like '%" + term + "%' ", // search term
              size : 25,
              start : (pageNo - 1) * 25
            };
          },
          results : function(data, pageNo) {
            var dataObj = eval(data);
            return {
              results : dataObj
            };
          },
          cache : true
        }
      });

      // 初始化日期范围选择控件
      var DateRange = require('daterangeinput');
      var daterangeAttrs = {
        daterangeId : "querydatewrapper_rang",
        label : "日期"
      };
      var daterangeCom = new DateRange({
        attrs : daterangeAttrs,
        renderTo : 'querydatewrapper'
      });

      daterangeCom.setRangeToToday();

      //加载表单模板和数据
      var Table = require("table");
      new Table({
        attrs : {
          id : "datatableid",
          isHovered : false,
          isStriped : true,
          isBordered : false
        },
        renderTo : param.divWrapperId

      });

      var dtUtil = require('datatableutil');

      var datatable = $('#datatableid').dataTable({
        "sDom" : "<'hidden'<'span6'l><'hidden'f>r>t<'row-fluid'<'span6'i><'span6'p>>",
        "bJQueryUI" : false,
        "oLanguage" : {
          "sUrl" : "/business/js/common/table/src/lang/dataTable.cn.txt"
        },
        "sPaginationType" : "bootstrap", // 分页自带两种样式，full_numbers和two_button(默认)
        'bPaginate' : true, // 是否分页
        "bProcessing" : true, // 当datatable获取数据时候是否显示正在处理提示信息。
        "bServerSide" : true, // 指定服务器端分页
        "bDeferRender" : true,
        "bFilter" : true,
        "bSort" : true,
        "bInfo" : true,
        "sAjaxSource" : "/data/queryNewAdd.do", // 数据源
        "iDisplayLength" : 400, // 默认分页的每页记录数DATATABLES_CONFIG.iDisplayLength.DEFAULT为35个
        "fnServerData" : function(sSource, aoData, fnCallback, oSettings) {

          var queryparam = dtUtil.convert_aoData(aoData);

          //拼接where查询条件
          var cond = getCondition();
          if (cond != '' && cond != null) {
            queryparam.q += cond;
          }

          // 添加自己的额外参数
          oSettings.jqXHR = $.ajax({
            "dataType" : 'json',
            "contentType" : "application/json;charset=UTF-8",
            "type" : "GET",
            "url" : sSource,
            "data" : queryparam, // 将请求数据转换为后台要求的JSON格式
            "success" : function(json) {
              //隐藏蒙版
              loader.noloading();
              dtUtil.successCallback(json, aoData, fnCallback);
              dataChart = json;
              // 获取拼接成json串
              var jsondata = dataChart.data;
              // 获取data中的items属性
              var itemsPro = jsondata.items;
              
              // 限制X轴数据显示个数，可将其放入tickInterval或step中
              var myInterval = 1;
              if(itemsPro.length>10&&itemsPro.length<=18){
                myInterval = 2;
              }else if(itemsPro.length>18&&itemsPro.length<=24){
                myInterval = 3;
              }else if(itemsPro.length>=25&&itemsPro.length<=50){
                myInterval = 5;
              }else if(itemsPro.length>50&&itemsPro.length<=100){
                myInterval = 10;
              }else if(itemsPro.length>100&&itemsPro.length<=200){
                myInterval = 20;
              }else if(itemsPro.length>200&&itemsPro.length<=400){
                myInterval = 40;
              }
              
              var strAddedUsers = [];// 新增用户
              var strActiveUsers = [];// 活跃用户
              var strAddedCarriers = [];// 新增企业数
              var strActiveCarriers = [];// 活跃企业数
              var strCallingNum = [];// 通话次数
              var strCallingDuration = [];// 通话时长(分钟)
              var strTime = [];// 日期
              // 格式化数据
              for(var i=itemsPro.length-1;i>=0;i--){
                var bean = itemsPro[i];
                strAddedUsers.push(bean.addedusers);
                strActiveUsers.push(bean.activeusers);
                strAddedCarriers.push(bean.addedcarriers);
                strActiveCarriers.push(bean.activecarriers);
                strCallingNum.push(bean.callingnum);
                strCallingDuration.push(bean.callingduration);
                strTime.push(bean.time);
              }
              
              new Highcharts.Chart({
                chart: {
                  //图表放置的容器，DIV
                   renderTo: 'container1',
                   //图表类型area(区域图)
                   type: 'area',
                   //x轴方向可以缩放 
                   zoomType: 'x',
                   //让放大的动画平滑些
                   animation: Highcharts.svg
                },
                credits: { 
                //右下角不显示LOGO (HighCharts.com)
                   enabled: false
                }, 
                title: {
                   text: '统计图表：' + startTimeSelect + '~' + endTimeSelect
                },
                xAxis: {
                   //x轴标签名称
                   // 是否允许刻度有小数
                   allowDecimals: false,
                   tickInterval : myInterval,//X轴方向数据显示间隔，即每隔tickInterval个值才显示一个数据
                   categories: strTime,
                   labels: {
                      // step : myInterval,//X轴方向数据显示步长，即每隔step个值才显示一个数据
                      style: {
                         y:26,//x轴标签位置：距X轴下方26像素 
                         // 'color': 'red',//刻度颜色
                         'fontSize':'14px' //刻度字体大小
                      },
                      formatter: function () {  
                         return this.value;
                      }
                   }
                },
                yAxis: {
                   min : 0,// 不显示负数
                   allowDecimals : false, // 是否允许刻度有小数
                   title: {
                      text: '各种数据',//标题 
                      style: {
                        'color': 'red',//刻度颜色
                        'fontSize':'16px' //刻度字体大小
                      }
                   },
                   labels: {
                     style: {
                       // 'color': 'red',//刻度颜色
                        'fontSize':'14px' //刻度字体大小
                     }
                   }
                },
                exporting: { 
                  enabled: true,  //设置导出按钮可用 
                  filename:'dudu.zonghexinzeng',//导出的文件名，暂时不能为中文，"嘟嘟图表"dudu.chart
                  sourceWidth:1500,//导出的文件宽度
                  sourceHeight:600//导出的文件高度
                },
                plotOptions: {
                  area: {
                      marker: {
                          enabled: false,
                          symbol: 'circle',
                          radius: 2,
                          states: {
                              hover: {
                                  enabled: true
                              }
                          }
                      }
                  }
                },
                series: [ {
                  name: '通话时长(分钟)',
                  data: strCallingDuration,
                }, {
                  name: '通话次数',
                  data: strCallingNum
                }, {
                   name: '新增用户',
                   data: strAddedUsers
                }, {
                   name: '活跃用户',
                   data: strActiveUsers
                }, {
                   name: '新增企业数',
                   data: strAddedCarriers
                }, {
                   name: '活跃企业数',
                   data: strActiveCarriers
                } ]
              });
              
            }
          });

        },
        "aoColumns" : [ {
          "sTitle" : "时间",
          "bSortable" : false,
          "mData" : "time",
          "sWidth" : "18%"
        }, {
          "sTitle" : "新增用户",
          "bSortable" : false,
          "mData" : "addedusers"
        }, {
          "sTitle" : "活跃用户",
          "bSortable" : false,
          "mData" : "activeusers"
        }, {
          "sTitle" : "新增企业数",
          "mData" : "addedcarriers",
          "bSortable" : false
        }, {
          "sTitle" : "活跃企业数",
          "mData" : "activecarriers",
          "bSortable" : false
        }, {
          "sTitle" : "通话次数",
          "bSortable" : false,
          "mData" : "callingnum"
        }, {
          "sTitle" : "通话时长(分钟)",
          "mData" : "callingduration",
          "bSortable" : false
        } ],
        "fnDrawCallback" : function(oSettings) {
          // 表格绘制完成后，去除width属性，使表格可缩放
          $('#' + oSettings.sTableId).css("width", "");
        }
      });
      
      
      // 统计图表按钮
      $('#btnchart').click(function() {
        //蒙版
        loader.loading("数据加载中，请稍后……");
        datatable.fnDraw();
        return false;
      });

      //重置查询条件
      $('#btnreset').click(function() {
        //蒙版
        loader.loading("数据加载中，请稍后……");
        $("#isvName").select2("val", "");
        $("#applyName").select2("val", "");
        daterangeCom.setRangeToToday();
        $("#carrierid").select2("val", "");
        $("#statisticstype").select2("val", "");
        datatable.fnFilter(); 
        return false;
      });

    });

  };
});
